home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / misc / football / user / htmltemplates.rexx < prev    next >
OS/2 REXX Batch file  |  1999-11-29  |  16KB  |  535 lines

  1. /* Mode=Run */
  2. /* ***********************************************************************
  3.  
  4.     HTMLTemplates.rexx v1.0 (03-7-99) for THE FOOTBALL REXX SUITE
  5.     -----------------------------------------------------------
  6.      by Heiko Schroeder (age@thepentagon.com)
  7.  
  8.     -This script will generate an HTML file of the fixtures and results.
  9.  
  10.     -To use HTMLTemplates.rexx you can run it by using the 'Run Script' button
  11.      on the Football main panel. Select HTMLTemplates.rexx from the file
  12.      requester and away you go. A file (????res.html) will be written to
  13.      Football/HTML/ but this location can be changed.
  14.      View the file with any browser that supports (coloured) tables.
  15.  
  16.     -This are the Tags for your HTML-template
  17.      Write the Tags <!-- ... --> in your template at a separate line. This
  18.      Comment Tags will be replaced by this script with calculated data.
  19.  
  20.      Check out Templates/German.html
  21.  
  22.      GamesResultTags
  23.      <!-- HTMLTITLE -->        Title of the League
  24.      <!-- DAYOFMATCH -->       Number of Game
  25.      <!-- STARTDAYOFMATCH -->  StartTag for ResultTable
  26.      <!-- MATCHDATE -->        Date of the Game
  27.      <!-- HOMETEAM -->         Team that plays at home
  28.      <!-- GOALSHOMETEAM -->    Goals for team at home
  29.      <!-- GOALSGUESTTEAM -->   Goals for team away
  30.      <!-- GUESTTEAM -->        Team that plays away
  31.      <!-- ENDDAYOFMATCH -->    EndTag for resultTable
  32.  
  33.      TableTags
  34.      <!-- TABSTART -->         StartTag for Table
  35.      <!-- TABPOSITION -->      Position of team
  36.      <!-- TABTEAM -->          Name of Team
  37.      <!-- TABGAMES -->         played Games of a Team
  38.      <!-- TABWON -->           wins
  39.      <!-- TABDRAWS -->         draws
  40.      <!-- TABLOST -->          lost
  41.      <!-- TABOWNGOALS -->      own goals
  42.      <!-- TABGUESTGOALS -->    guests goals
  43.      <!-- TABGOALDIFF -->      difference of goals
  44.      <!-- TABPOINTS -->        points at the saison
  45.      <!-- TABEND -->           EndTag for Table
  46.  
  47.      Navigation
  48.      <!-- BACK -->             previous game results
  49.      <!-- BACKMATCH -->        name of previous match link
  50.      <!-- NEXT -->             next game results
  51.      <!-- NEXTMATCH -->        name of next match link
  52.  
  53.     You have two possibilities to create your HTML Site.
  54.     1.) Answer the following question with NO:
  55.         Do you want to create the HTML-Output via .data file?
  56.  
  57.     2.) Create a file with the dates of a MatchDate. This file have to be
  58.         located in /FootBall/data/ with the extension: .webdata
  59.  
  60.      The convention of the file or the requester has to be:
  61.  
  62.      Number of MatchDate;First Day of MatchDate;Last Day of MatchDate.
  63.      e.g  2;27.August;29.August    or for one day     6;07.September
  64.  
  65.      The dates have to be the same dates at line *Date: in Data/#?.sf file.
  66.      (In Germany several matches from one MatchDate are played at
  67.       different days.)
  68.  
  69.  
  70.      Version    Date     History
  71.     --------------------------------------------------------------------------
  72.       0.9       030799   first internal release
  73.                          without highscore tables
  74.       1.0       190799   first inofficial release
  75.                          with integrated highscore tables
  76.  
  77.                 250899   Added more error messages and checking.
  78.                 110999   Converted to use locale. Some error messages, before
  79.                          reading the locale, will still be in English.
  80.  
  81.       1.1     in future  Tags for several statistics
  82.  
  83. ************************************************************************** */
  84. PARSE ARG league_file
  85.  
  86. htmlpath    = "HTML/"               /* path for your HTML files */
  87. lname       = league_file           /* name for the HTML file taken from league file name */
  88. version     = 1
  89. input_file  = '.sf'
  90. input2_file = '.df'
  91. autosched   = '*AUTOSCHD='
  92. separator   = '*'
  93. HTMLTemplate= ''
  94. output_file = "RAM:FBHTML.temp"
  95. filesdone.  = '???'
  96. fdct        = 0
  97. league_file2= league_file
  98.  
  99.  
  100. if pos("/",league_file) > 0 then
  101.    parse var league_file . "/" lname
  102.  
  103. lname = strip(lname)
  104. league_file = "Data/"league_file
  105.  
  106. if open(datafile,"Data/Football.locale",'r') then do
  107.    line = readln(datafile)
  108.    locdir = strip(line)
  109.    close(datafile)
  110. end
  111. else do
  112.    say
  113.    say "ERROR :    (HTMLTemplates)"
  114.    say
  115.    say "Cannot read 'Data/Football.locale' for the locale settings."
  116.    exit
  117. end
  118.  
  119. locdir = locdir"User/HTMLTemplates.data"
  120.  
  121. if open(datafile,"ENV:FootballRXPath",'r') then do
  122.    line = readln(datafile)
  123.    rxdir = strip(line)
  124.    close(datafile)
  125. end
  126. else
  127.    rxdir = "SYS:Rexxc/"
  128.  
  129. if exists(locdir) > 0 then do
  130.   address command rxdir'rx 'locdir
  131.   VarCount = getclip('VarCount')
  132.   do i = 1 to VarCount
  133.     interpret getclip('var.'i)
  134.   end
  135. end
  136. else do
  137.    say
  138.    say "ERROR :    (HTMLTemplates)"
  139.    say
  140.    say "Cannot find '"locdir"' to read locale settings."
  141.    exit
  142. end
  143.  
  144. if exists(league_file || input_file) = 0  then do
  145.    say
  146.    say htt_error
  147.    say
  148.    say htt_t1"'"league_file || input_file"'."
  149.    exit
  150. end
  151.  
  152. if exists(league_file || input2_file) = 0  then do
  153.    say
  154.    say htt_error
  155.    say
  156.    say htt_t1"'"league_file || input2_file"'."
  157.    exit
  158. end
  159.  
  160. if exists("c:RequestChoice") = 0  then do
  161.    say
  162.    say htt_error
  163.    say
  164.    say htt_t1"'RequestChoice'"htt_t4
  165.    exit
  166. end
  167. if exists("c:RequestFile") = 0  then do
  168.    say
  169.    say htt_error
  170.    say
  171.    say htt_t1"'RequestFile'"htt_t4
  172.    exit
  173. end
  174. if exists("c:RequestString") = 0  then do
  175.    say
  176.    say htt_error
  177.    say
  178.    say htt_t1"'RequestString'"htt_t4
  179.    exit
  180. end
  181.  
  182.  
  183. autos = 0
  184. /* .df file */
  185. if open(datafile,league_file || input2_file,'r') then do
  186.    do while ~eof(datafile)
  187.       line = readln(datafile)
  188.       if pos(autosched,line) > 0 then do
  189.          autofile = delstr(line,1,10)
  190.          autos = 1
  191.       end
  192.    end
  193.    close(datafile)
  194. end
  195. else
  196.    Call ERRORFile
  197.  
  198. if autos = 0 then
  199.    Call ERRORFile2
  200.  
  201. /* Input data for generating special game datas */
  202.    address command 'c:RequestChoice Title="'htt_t7'" Body="'htt_t8'" Gadgets='htt_t9' >ram:FBHTML.temp'
  203.    if Open("Temp",output_file,"R") then do
  204.       Selection=readln("Temp")
  205.       Close("Temp")
  206.    end
  207.    else call ERRORFile4
  208.  
  209. /* Select HTML Template */
  210.    address command 'c:RequestFile DRAWER='Pragma(D)||'/HTMLTemplates PATTERN="#?.#?htm#?" TITLE="'htt_t10'" >ram:FBHTML.temp'
  211.    if Open("Temp",output_file,"R") then do
  212.       HTMLTemplate=strip(readln("Temp"),'B',d2c(34))
  213.       Close("Temp")
  214.    end
  215.    else call ERRORFile5
  216.  
  217. Time('R')
  218.  
  219. GameTime.0=0
  220. If Selection=1 then do
  221.    if open(datatmpl,league_file'.webdata','r') then do
  222.       i=0
  223.       do while ~eof(datatmpl)
  224.          i=i+1; GameTime.i=readln(datatmpl)
  225.          If GameTime.i='' then i=i-1
  226.       end
  227.       close(datatmpl)
  228.       GameTime.0=i
  229.    End
  230.    else call ERRORFile6
  231. End
  232. else do
  233.    address command 'c:RequestString TITLE="HTMLTemplates.rexx" BODY="'htt_t11'" PATTERN=";;" >Ram:FBHTML.temp'
  234.    if Open("Temp",output_file,"R") then do
  235.       GameTime.1=readln("Temp")
  236.       GameTime.0=1
  237.       Close("Temp")
  238.    end
  239.    else call ERRORFile7
  240. end
  241.  
  242. If GameTime.0=0 then do
  243.    say
  244.    say htt_error
  245.    say
  246.    say htt_t5
  247.    exit
  248. end
  249.  
  250. Do z=1 to GameTime.0
  251.  
  252.    semipos1=Pos(";",GameTime.z)
  253.    MatchNo=substr(GameTime.z,1,semipos1-1)
  254.    semipos2=Pos(";",GameTime.z,semipos1+1)
  255.    /* Nur ein Spieltag */
  256.    If semipos2=0 then do
  257.       MatchNoStart=substr(GameTime.z,semipos1+1)
  258.       MatchNoEnd  =MatchNoStart
  259.    end
  260.    else do
  261.       MatchNoStart=substr(GameTime.z,semipos1+1,semipos2-semipos1-1)
  262.       MatchNoEnd  =substr(GameTime.z,semipos2+1)
  263.    end
  264.  
  265.    /* Read Dates from .sf */
  266.    LineNo=0
  267.    if open(datafile,league_file || input_file,'r') then do
  268.       do while ~eof(datafile)
  269.          line = readln(datafile)
  270.          LineNo=LineNo+1
  271.  
  272.          if pos('*DATE: ',upper(line))=1 then do
  273.             If pos(upper(MatchNoStart), upper(line))>0 then
  274.                DateStart=LineNo
  275.             If pos(upper(MatchNoEnd), upper(line))>0 then do
  276.                DateEnd=LineNo
  277.                Leave
  278.             End
  279.          End
  280.       End
  281.       close(datafile)
  282.    end
  283.    else call ERRORFile8
  284.    s=Datestart
  285.    s=Dateend
  286.    /* Read Game Datas from .sf file */
  287.  
  288.    DasDatumNoch=0
  289.    DateCount=0
  290.    LineNo=0
  291.  
  292.    /* Read file #?.sf for Gamedatas and store it in Arrays */
  293.    if open(datafile,league_file || input_file,'r') then do
  294.       do while ~eof(datafile)
  295.          GameCount=0
  296.          line = readln(datafile)
  297.          LineNo=LineNo+1
  298.  
  299.          if (pos('*DATE: ',upper(line))=1 & (DasDatumNoch=1)) then
  300.             leave
  301.  
  302.          if pos('**',line) = 1 then
  303.             HTMLTitle=strip(substr(line,3,80))
  304.  
  305.          if ((pos('*DATE: ',upper(line))=1) & (LineNo>=DateStart) & (LineNo<=DateEnd)) then do
  306.             DateCount=DateCount+1
  307.             Datum.DateCount=strip(substr(line,7,80))
  308.  
  309.             If LineNo>=DateEnd then DasDatumNoch=1
  310.  
  311.             /* Read line with separator * */
  312.             line = readln(datafile)
  313.             LineNo=LineNo+1
  314.             line = readln(datafile)
  315.             LineNo=LineNo+1
  316.  
  317.             /* Read GameDatas */
  318.             Do While (pos(separator,line) = 0 & ~eof(datafile))
  319.                GameCount=GameCount+1
  320.                /* Heimmannschaft = t1 */
  321.                t1.DateCount.GameCount = strip(substr(line,1,30))
  322.                /* Heimmannschaft = gt1 */
  323.                gt1.DateCount.GameCount = strip(substr(line,31,3))
  324.  
  325.                /* Gastmannschaft = t2 */
  326.                t2.DateCount.GameCount = strip(substr(line,40))
  327.                /* GoalGastmannschaft = gt2 */
  328.                gt2.DateCount.GameCount = strip(substr(line,36,3))
  329.                line = readln(datafile)
  330.                LineNo=LineNo+1
  331.             End
  332.             Menge.DateCount=GameCount
  333.  
  334.          end
  335.       end
  336.       close(datafile)
  337.    end
  338.    else
  339.       Call ErrorFile3
  340.  
  341.  
  342.    /* read HTMLTemplate and replace the tags */
  343.    If open(template,HTMLTemplate,'r') then do
  344.       fdct = fdct + 1
  345.       filesdone.fdct = htmlpath||lname||"res"||MatchNo||".html"
  346. /*      Say "Create "htmlpath||lname||"res"||MatchNo||".html" */
  347.       open(stats,htmlpath||lname||"res"||MatchNo||".html","w")
  348.       do while ~eof(template)
  349.          TLine = readln(template)
  350.          Select
  351.             When pos('<!-- HTMLTITLE -->',upper(TLine))    then Call WriteData(HTMLTitle)
  352.             When pos('<!-- DAYOFMATCH -->',upper(TLine))     then Call WriteData(MatchNo||".")
  353.  
  354.             When (pos('HREF="<!-- BACK -->">',upper(TLine)) & (MatchNo>1)) then
  355.                Call WriteData('HREF='||lname||'res'||MatchNo-1||'.html>')
  356.             When (pos('HREF="<!-- NEXT -->">',upper(TLine)) & (MatchNo<34)) then
  357.                Call WriteData('HREF='||lname||'res'||MatchNo+1||'.html>')
  358.             When (pos('<!-- BACKMATCH -->',upper(TLine)) & (MatchNo>1)) then
  359.                Call WriteData(MatchNo-1||'. Spieltag')
  360.             When (pos('<!-- NEXTMATCH -->',upper(TLine)) & (MatchNo<34)) then
  361.                Call WriteData(MatchNo+1||'. Spieltag')
  362.  
  363.             When pos('<!-- STARTDAYOFMATCH -->',upper(TLine)) then do
  364.                StandOnLine=Seek(template,0,'C')
  365.  
  366.                Do j = 1 to DateCount
  367.                   DateIsWritten=0
  368.                   Do k = 1 to Menge.j
  369.                      Call Seek(template,StandOnLine,'B')
  370.                      TLine = readln(template)
  371.                      do while pos('<!-- ENDDAYOFMATCH -->',TLine)=0
  372.                         Select
  373.                            When (pos('<!-- MATCHDATE -->',upper(TLine)) & (DateIsWritten=0)) then do
  374.                                  Call WriteData(Datum.j)
  375.                                  DateIsWritten=1
  376.                            End
  377.                            When pos('<!-- HOMETEAM -->',upper(TLine))     then Call WriteData(t1.j.k)
  378.                            When pos('<!-- GOALSHOMETEAM -->',upper(TLine)) then Call writeData(gt1.j.k)
  379.                            When pos('<!-- GOALSGUESTTEAM -->',upper(TLine)) then Call writeData(gt2.j.k)
  380.                            When pos('<!-- GUESTTEAM -->',upper(TLine))     then Call writeData(t2.j.k)
  381.                            Otherwise call writeln(stats,TLine)
  382.                         End
  383.                         TLine = readln(template);
  384.                      End
  385.                   End /*do k*/
  386.                End /*j*/
  387.             End /*When*/
  388.  
  389.             When pos('<!-- TABSTART -->',upper(TLine)) then do
  390.                StandOnLine=Seek(template,0,'C')
  391.  
  392. /* */
  393.                flag=1
  394.                interpret "call 'User/HTML_Table.rexx'(" 'league_file2' DateStart DateEnd flag ")"
  395.                VarCount = getclip('VarCount')
  396.                do i = 1 to VarCount
  397.                   interpret getclip('var.'i)
  398.                end
  399. /* */
  400.  
  401.                Do k = 1 to varcount
  402.                   Call Seek(template,StandOnLine,'B')
  403.                   TLine = readln(template)
  404.                   do while pos('<!-- TABEND -->',TLine)=0
  405.                      Select
  406.                         When pos('<!-- TABPOSITION -->',upper(TLine)) then Call WriteData(k)
  407.                         When pos('<!-- TABTEAM -->',upper(TLine))     then Call writeData(substr(teams.k,1,35))
  408.                         When pos('<!-- TABGAMES -->',upper(TLine))    then Call writeData(substr(teams.k,35,4))
  409.                         When pos('<!-- TABWON -->',upper(TLine))      then Call writeData(substr(teams.k,39,4))
  410.                         When pos('<!-- TABDRAWS -->',upper(TLine))    then Call writeData(substr(teams.k,43,4))
  411.                         When pos('<!-- TABLOST -->',upper(TLine))     then Call writeData(substr(teams.k,47,4))
  412.                         When pos('<!-- TABOWNGOALS -->',upper(TLine)) then Call writeData(substr(teams.k,51,6))
  413.                         When pos('<!-- TABGUESTGOALS -->',upper(TLine)) then Call writeData(substr(teams.k,57,7))
  414.                         When pos('<!-- TABPOINTS -->',upper(TLine))   then Call writeData(substr(teams.k,64,9))
  415.                         When pos('<!-- TABGOALDIFF -->',upper(TLine)) then Call writeData(substr(teams.k,73))
  416.                         Otherwise call writeln(stats,TLine)
  417.                      End
  418.                      TLine = readln(template);
  419.                   End
  420.                End
  421.  
  422.             End   /* TabStart */
  423.             Otherwise call writeln(stats,TLine)
  424.          End
  425.       End
  426.       Close(Template)
  427.       close(stats)
  428.    End
  429.    else
  430.       Call ERRORHTMLCreator
  431. End
  432. /*
  433. Say Time('E')
  434. Say
  435. */
  436.  
  437. address command "c:Delete Ram:FBHTML.temp Quiet"
  438.  
  439. say
  440. say center(htt_t6,78)
  441. say "-------------------------------------------------------------------------------"
  442. say
  443. say
  444. Say htt_t12
  445. Say htt_t13" 'HTML/...'."
  446. say
  447. say htt_t14" :  ("fdct")"
  448. say
  449. do i=1 to fdct
  450.    if filesdone.i ~= "" | filesdone.i ~= "???" then
  451.       say "         '"filesdone.i"'"
  452. end
  453. say
  454.  
  455. exit
  456.  
  457. /* -------------------------------------------------------------------------------- */
  458.  
  459.  
  460. WriteData:
  461.    Parse Arg Replacer
  462.  
  463.    Replacer = strip(Replacer)
  464.    Call WriteLn(stats,Replacer)
  465.    Return
  466.  
  467.  
  468. ErrorFile:
  469.    say
  470.    say htt_error
  471.    say
  472.    say htt_t2"'"league_file||input2_file"'"htt_t3
  473.    exit
  474.  
  475. ErrorFile2:
  476.    say
  477.    say htt_error
  478.    say
  479.    say htt_t15
  480.    say htt_t16
  481.    say htt_t17
  482.    say
  483.    exit
  484.  
  485. ErrorFile3:
  486.    say
  487.    say htt_error
  488.    say
  489.    say htt_t2"'"league_file||input_file"'"htt_t3
  490.    exit
  491.  
  492. ERRORHTMLCreator:
  493.    say
  494.    say htt_error
  495.    say
  496.    say htt_t18" '"HTMLTemplate"'"htt_t3
  497.    exit
  498.  
  499. ErrorFile4:
  500.    say
  501.    say htt_error
  502.    say
  503.    say htt_t2"'"output_file"' "htt_t19
  504.    exit
  505.  
  506. ErrorFile5:
  507.    say
  508.    say htt_error
  509.    say
  510.    say htt_t2"'"output_file"' "htt_t20
  511.    exit
  512.  
  513. ErrorFile6:
  514.    say
  515.    say htt_error
  516.    say
  517.    say htt_t2"'"league_file".webdata'"htt_t3
  518.    exit
  519.  
  520. ErrorFile7:
  521.    say
  522.    say htt_error
  523.    say
  524.    say htt_t2"'"output_file"' "htt_t21
  525.    exit
  526.  
  527. ErrorFile8:
  528.    say
  529.    say htt_error
  530.    say
  531.    say htt_t2"'"league_file||input_file"'"htt_3
  532.    exit
  533.  
  534.  
  535. /* -------------------------------------------------------------------------------- */